home *** CD-ROM | disk | FTP | other *** search
/ Die Ultimative Software-P…i Collection 1996 & 1997 / Die Ultimative Software-Pakete CD-ROM fur Atari Collection 1996 & 1997.iso / g / gnu_c / info.lzh / INFO / GCC_INFO.4 < prev    next >
Encoding:
GNU Info File  |  1993-10-21  |  49.8 KB  |  1,113 lines

  1. This is Info file gcc.info, produced by Makeinfo-1.54 from the input
  2. file gcc.texi.
  3.  
  4.    This file documents the use and the internals of the GNU compiler.
  5.  
  6.    Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
  7.  
  8.    Permission is granted to make and distribute verbatim copies of this
  9. manual provided the copyright notice and this permission notice are
  10. preserved on all copies.
  11.  
  12.    Permission is granted to copy and distribute modified versions of
  13. this manual under the conditions for verbatim copying, provided also
  14. that the sections entitled "GNU General Public License" and "Protect
  15. Your Freedom--Fight `Look And Feel'" are included exactly as in the
  16. original, and provided that the entire resulting derived work is
  17. distributed under the terms of a permission notice identical to this
  18. one.
  19.  
  20.    Permission is granted to copy and distribute translations of this
  21. manual into another language, under the above conditions for modified
  22. versions, except that the sections entitled "GNU General Public
  23. License" and "Protect Your Freedom--Fight `Look And Feel'", and this
  24. permission notice, may be included in translations approved by the Free
  25. Software Foundation instead of in the original English.
  26.  
  27. File: gcc.info,  Node: System V Options,  Prev: DEC Alpha Options,  Up: Submodel Options
  28.  
  29. Options for System V
  30. --------------------
  31.  
  32.    These additional options are available on System V Release 4 for
  33. compatibility with other compilers on those systems:
  34.  
  35. `-Qy'
  36.      Identify the versions of each tool used by the compiler, in a
  37.      `.ident' assembler directive in the output.
  38.  
  39. `-Qn'
  40.      Refrain from adding `.ident' directives to the output file (this is
  41.      the default).
  42.  
  43. `-YP,DIRS'
  44.      Search the directories DIRS, and no others, for libraries
  45.      specified with `-l'.
  46.  
  47. `-Ym,DIR'
  48.      Look in the directory DIR to find the M4 preprocessor.  The
  49.      assembler uses this option.
  50.  
  51. File: gcc.info,  Node: Code Gen Options,  Next: Environment Variables,  Prev: Submodel Options,  Up: Invoking GCC
  52.  
  53. Options for Code Generation Conventions
  54. =======================================
  55.  
  56.    These machine-independent options control the interface conventions
  57. used in code generation.
  58.  
  59.    Most of them have both positive and negative forms; the negative form
  60. of `-ffoo' would be `-fno-foo'.  In the table below, only one of the
  61. forms is listed--the one which is not the default.  You can figure out
  62. the other form by either removing `no-' or adding it.
  63.  
  64. `-fpcc-struct-return'
  65.      Use the same convention for returning `struct' and `union' values
  66.      that is used by the Portable C compiler, i.e. they are returned in
  67.      memory instead of in registers.  This convention is less efficient
  68.      for small structures, and on many machines it fails to be
  69.      reentrant; but it has the advantage of allowing intercallability
  70.      between GNU CC-compiled code and PCC-compiled code.
  71.  
  72. `-freg-struct-return'
  73.      Use the convention that `struct' and `union' values are returned
  74.      in registers when possible.  This is more efficient for small
  75.      structures than `-fpcc-struct-return'.
  76.  
  77.      If you specify neither the option `-fpcc-struct-return' nor the
  78.      option `-freg-struct-return', GNU CC defaults to whichever
  79.      convention is standard for the target.  If there is no standard
  80.      convention, GNU CC defaults to `-fpcc-struct-return'.
  81.  
  82. `-fshort-enums'
  83.      Allocate to an `enum' type only as many bytes as it needs for the
  84.      declared range of possible values.  Specifically, the `enum' type
  85.      will be equivalent to the smallest integer type which has enough
  86.      room.
  87.  
  88. `-fshort-double'
  89.      Use the same size for `double' as for `float'.
  90.  
  91. `-fshared-data'
  92.      Requests that the data and non-`const' variables of this
  93.      compilation be shared data rather than private data.  The
  94.      distinction makes sense only on certain operating systems, where
  95.      shared data is shared between processes running the same program,
  96.      while private data exists in one copy per process.
  97.  
  98. `-fno-common'
  99.      Allocate even uninitialized global variables in the bss section of
  100.      the object file, rather than generating them as common blocks.
  101.      This has the effect that if the same variable is declared (without
  102.      `extern') in two different compilations, you will get an error
  103.      when you link them.  The only reason this might be useful is if
  104.      you wish to verify that the program will work on other systems
  105.      which always work this way.
  106.  
  107. `-fno-ident'
  108.      Ignore the `#ident' directive.
  109.  
  110. `-fno-gnu-linker'
  111.      Do not output global initializations (such as C++ constructors and
  112.      destructors) in the form used by the GNU linker (on systems where
  113.      the GNU linker is the standard method of handling them).  Use this
  114.      option when you want to use a non-GNU linker, which also requires
  115.      using the `collect2' program to make sure the system linker
  116.      includes constructors and destructors.  (`collect2' is included in
  117.      the GNU CC distribution.)  For systems which *must* use
  118.      `collect2', the compiler driver `gcc' is configured to do this
  119.      automatically.
  120.  
  121. `-finhibit-size-directive'
  122.      Don't output a `.size' assembler directive, or anything else that
  123.      would cause trouble if the function is split in the middle, and the
  124.      two halves are placed at locations far apart in memory.  This
  125.      option is used when compiling `crtstuff.c'; you should not need to
  126.      use it for anything else.
  127.  
  128. `-fverbose-asm'
  129.      Put extra commentary information in the generated assembly code to
  130.      make it more readable.  This option is generally only of use to
  131.      those who actually need to read the generated assembly code
  132.      (perhaps while debugging the compiler itself).
  133.  
  134. `-fvolatile'
  135.      Consider all memory references through pointers to be volatile.
  136.  
  137. `-fvolatile-global'
  138.      Consider all memory references to extern and global data items to
  139.      be volatile.
  140.  
  141. `-fpic'
  142.      If supported for the target machine, generate position-independent
  143.      code (PIC) suitable for use in a shared library.  All addresses
  144.      will be accessed through a global offset table (GOT).  If the GOT
  145.      size for the linked executable exceeds a machine-specific maximum
  146.      size, you will get an error message from the linker indicating
  147.      that `-fpic' does not work; recompile with `-fPIC' instead.
  148.      (These maximums are 16k on the m88k, 8k on the Sparc, and 32k on
  149.      the m68k and RS/6000.  The 386 has no such limit.)
  150.  
  151.      Position-independent code requires special support, and therefore
  152.      works only on certain machines.  For the 386, GNU CC supports PIC
  153.      for System V but not for the Sun 386i.  Code generated for the IBM
  154.      RS/6000 is always position-independent.
  155.  
  156.      The GNU assembler does not fully support PIC.  Currently, you must
  157.      use some other assembler in order for PIC to work.  We would
  158.      welcome volunteers to upgrade GAS to handle this; the first part
  159.      of the job is to figure out what the assembler must do differently.
  160.  
  161. `-fPIC'
  162.      If supported for the target machine, emit position-independent
  163.      code, suitable for dynamic linking and avoiding any limit on the
  164.      size of the global offset table.  This option makes a difference
  165.      on the m68k, m88k and the Sparc.
  166.  
  167.      Position-independent code requires special support, and therefore
  168.      works only on certain machines.
  169.  
  170. `-ffixed-REG'
  171.      Treat the register named REG as a fixed register; generated code
  172.      should never refer to it (except perhaps as a stack pointer, frame
  173.      pointer or in some other fixed role).
  174.  
  175.      REG must be the name of a register.  The register names accepted
  176.      are machine-specific and are defined in the `REGISTER_NAMES' macro
  177.      in the machine description macro file.
  178.  
  179.      This flag does not have a negative form, because it specifies a
  180.      three-way choice.
  181.  
  182. `-fcall-used-REG'
  183.      Treat the register named REG as an allocatable register that is
  184.      clobbered by function calls.  It may be allocated for temporaries
  185.      or variables that do not live across a call.  Functions compiled
  186.      this way will not save and restore the register REG.
  187.  
  188.      Use of this flag for a register that has a fixed pervasive role in
  189.      the machine's execution model, such as the stack pointer or frame
  190.      pointer, will produce disastrous results.
  191.  
  192.      This flag does not have a negative form, because it specifies a
  193.      three-way choice.
  194.  
  195. `-fcall-saved-REG'
  196.      Treat the register named REG as an allocatable register saved by
  197.      functions.  It may be allocated even for temporaries or variables
  198.      that live across a call.  Functions compiled this way will save
  199.      and restore the register REG if they use it.
  200.  
  201.      Use of this flag for a register that has a fixed pervasive role in
  202.      the machine's execution model, such as the stack pointer or frame
  203.      pointer, will produce disastrous results.
  204.  
  205.      A different sort of disaster will result from the use of this flag
  206.      for a register in which function values may be returned.
  207.  
  208.      This flag does not have a negative form, because it specifies a
  209.      three-way choice.
  210.  
  211. `+e0'
  212. `+e1'
  213.      Control whether virtual function definitions in classes are used to
  214.      generate code, or only to define interfaces for their callers.
  215.      (C++ only).
  216.  
  217.      These options are provided for compatibility with `cfront' 1.x
  218.      usage; the recommended alternative GNU C++ usage is in flux.
  219.      *Note Declarations and Definitions in One Header: C++ Interface.
  220.  
  221.      With `+e0', virtual function definitions in classes are declared
  222.      `extern'; the declaration is used only as an interface
  223.      specification, not to generate code for the virtual functions (in
  224.      this compilation).
  225.  
  226.      With `+e1', G++ actually generates the code implementing virtual
  227.      functions defined in the code, and makes them publicly visible.
  228.  
  229. File: gcc.info,  Node: Environment Variables,  Next: Running Protoize,  Prev: Code Gen Options,  Up: Invoking GCC
  230.  
  231. Environment Variables Affecting GNU CC
  232. ======================================
  233.  
  234.    This section describes several environment variables that affect how
  235. GNU CC operates.  They work by specifying directories or prefixes to use
  236. when searching for various kinds of files.
  237.  
  238.    Note that you can also specify places to search using options such as
  239. `-B', `-I' and `-L' (*note Directory Options::.).  These take
  240. precedence over places specified using environment variables, which in
  241. turn take precedence over those specified by the configuration of GNU
  242. CC.  *Note Driver::.
  243.  
  244. `TMPDIR'
  245.      If `TMPDIR' is set, it specifies the directory to use for temporary
  246.      files.  GNU CC uses temporary files to hold the output of one
  247.      stage of compilation which is to be used as input to the next
  248.      stage: for example, the output of the preprocessor, which is the
  249.      input to the compiler proper.
  250.  
  251. `GCC_EXEC_PREFIX'
  252.      If `GCC_EXEC_PREFIX' is set, it specifies a prefix to use in the
  253.      names of the subprograms executed by the compiler.  No slash is
  254.      added when this prefix is combined with the name of a subprogram,
  255.      but you can specify a prefix that ends with a slash if you wish.
  256.  
  257.      If GNU CC cannot find the subprogram using the specified prefix, it
  258.      tries looking in the usual places for the subprogram.
  259.  
  260.      Other prefixes specified with `-B' take precedence over this
  261.      prefix.
  262.  
  263.      This prefix is also used for finding files such as `crt0.o' that
  264.      are used for linking.
  265.  
  266.      In addition, the prefix is used in an unusual way in finding the
  267.      directories to search for header files.  For each of the standard
  268.      directories whose name normally begins with
  269.      `/usr/local/lib/gcc-lib' (more precisely, with the value of
  270.      `GCC_INCLUDE_DIR'), GNU CC tries replacing that beginning with the
  271.      specified prefix to produce an alternate directory name.  Thus,
  272.      with `-Bfoo/', GNU CC will search `foo/bar' where it would
  273.      normally search `/usr/local/lib/bar'.  These alternate directories
  274.      are searched first; the standard directories come next.
  275.  
  276. `COMPILER_PATH'
  277.      The value of `COMPILER_PATH' is a colon-separated list of
  278.      directories, much like `PATH'.  GNU CC tries the directories thus
  279.      specified when searching for subprograms, if it can't find the
  280.      subprograms using `GCC_EXEC_PREFIX'.
  281.  
  282. `LIBRARY_PATH'
  283.      The value of `LIBRARY_PATH' is a colon-separated list of
  284.      directories, much like `PATH'.  GNU CC tries the directories thus
  285.      specified when searching for special linker files, if it can't
  286.      find them using `GCC_EXEC_PREFIX'.  Linking using GNU CC also uses
  287.      these directories when searching for ordinary libraries for the
  288.      `-l' option (but directories specified with `-L' come first).
  289.  
  290. `C_INCLUDE_PATH'
  291. `CPLUS_INCLUDE_PATH'
  292. `OBJC_INCLUDE_PATH'
  293.      These environment variables pertain to particular languages.  Each
  294.      variable's value is a colon-separated list of directories, much
  295.      like `PATH'.  When GNU CC searches for header files, it tries the
  296.      directories listed in the variable for the language you are using,
  297.      after the directories specified with `-I' but before the standard
  298.      header file directories.
  299.  
  300. `DEPENDENCIES_OUTPUT'
  301.      If this variable is set, its value specifies how to output
  302.      dependencies for Make based on the header files processed by the
  303.      compiler.  This output looks much like the output from the `-M'
  304.      option (*note Preprocessor Options::.), but it goes to a separate
  305.      file, and is in addition to the usual results of compilation.
  306.  
  307.      The value of `DEPENDENCIES_OUTPUT' can be just a file name, in
  308.      which case the Make rules are written to that file, guessing the
  309.      target name from the source file name.  Or the value can have the
  310.      form `FILE TARGET', in which case the rules are written to file
  311.      FILE using TARGET as the target name.
  312.  
  313. File: gcc.info,  Node: Running Protoize,  Prev: Environment Variables,  Up: Invoking GCC
  314.  
  315. Running Protoize
  316. ================
  317.  
  318.    The program `protoize' is an optional part of GNU C.  You can use it
  319. to add prototypes to a program, thus converting the program to ANSI C
  320. in one respect.  The companion program `unprotoize' does the reverse:
  321. it removes argument types from any prototypes that are found.
  322.  
  323.    When you run these programs, you must specify a set of source files
  324. as command line arguments.  The conversion programs start out by
  325. compiling these files to see what functions they define.  The
  326. information gathered about a file FOO is saved in a file named `FOO.X'.
  327.  
  328.    After scanning comes actual conversion.  The specified files are all
  329. eligible to be converted; any files they include (whether sources or
  330. just headers) are eligible as well.
  331.  
  332.    But not all the eligible files are converted.  By default,
  333. `protoize' and `unprotoize' convert only source and header files in the
  334. current directory.  You can specify additional directories whose files
  335. should be converted with the `-d DIRECTORY' option.  You can also
  336. specify particular files to exclude with the `-x FILE' option.  A file
  337. is converted if it is eligible, its directory name matches one of the
  338. specified directory names, and its name within the directory has not
  339. been excluded.
  340.  
  341.    Basic conversion with `protoize' consists of rewriting most function
  342. definitions and function declarations to specify the types of the
  343. arguments.  The only ones not rewritten are those for varargs functions.
  344.  
  345.    `protoize' optionally inserts prototype declarations at the
  346. beginning of the source file, to make them available for any calls that
  347. precede the function's definition.  Or it can insert prototype
  348. declarations with block scope in the blocks where undeclared functions
  349. are called.
  350.  
  351.    Basic conversion with `unprotoize' consists of rewriting most
  352. function declarations to remove any argument types, and rewriting
  353. function definitions to the old-style pre-ANSI form.
  354.  
  355.    Both conversion programs print a warning for any function
  356. declaration or definition that they can't convert.  You can suppress
  357. these warnings with `-q'.
  358.  
  359.    The output from `protoize' or `unprotoize' replaces the original
  360. source file.  The original file is renamed to a name ending with
  361. `.save'.  If the `.save' file already exists, then the source file is
  362. simply discarded.
  363.  
  364.    `protoize' and `unprotoize' both depend on GNU CC itself to scan the
  365. program and collect information about the functions it uses.  So
  366. neither of these programs will work until GNU CC is installed.
  367.  
  368.    Here is a table of the options you can use with `protoize' and
  369. `unprotoize'.  Each option works with both programs unless otherwise
  370. stated.
  371.  
  372. `-B DIRECTORY'
  373.      Look for the file `SYSCALLS.c.X' in DIRECTORY, instead of the
  374.      usual directory (normally `/usr/local/lib').  This file contains
  375.      prototype information about standard system functions.  This option
  376.      applies only to `protoize'.
  377.  
  378. `-c COMPILATION-OPTIONS'
  379.      Use  COMPILATION-OPTIONS as the options when running `gcc' to
  380.      produce the `.X' files.  The special option `-aux-info' is always
  381.      passed in addition, to tell `gcc' to write a `.X' file.
  382.  
  383.      Note that the compilation options must be given as a single
  384.      argument to `protoize' or `unprotoize'.  If you want to specify
  385.      several `gcc' options, you must quote the entire set of
  386.      compilation options to make them a single word in the shell.
  387.  
  388.      There are certain `gcc' arguments that you cannot use, because they
  389.      would produce the wrong kind of output.  These include `-g', `-O',
  390.      `-c', `-S', and `-o' If you include these in the
  391.      COMPILATION-OPTIONS, they are ignored.
  392.  
  393. `-C'
  394.      Rename files to end in `.C' instead of `.c'.  This is convenient
  395.      if you are converting a C program to C++.  This option applies
  396.      only to `protoize'.
  397.  
  398. `-g'
  399.      Add explicit global declarations.  This means inserting explicit
  400.      declarations at the beginning of each source file for each function
  401.      that is called in the file and was not declared.  These
  402.      declarations precede the first function definition that contains a
  403.      call to an undeclared function.  This option applies only to
  404.      `protoize'.
  405.  
  406. `-i STRING'
  407.      Indent old-style parameter declarations with the string STRING.
  408.      This option applies only to `protoize'.
  409.  
  410.      `unprotoize' converts prototyped function definitions to old-style
  411.      function definitions, where the arguments are declared between the
  412.      argument list and the initial `{'.  By default, `unprotoize' uses
  413.      five spaces as the indentation.  If you want to indent with just
  414.      one space instead, use `-i " "'.
  415.  
  416. `-k'
  417.      Keep the `.X' files.  Normally, they are deleted after conversion
  418.      is finished.
  419.  
  420. `-l'
  421.      Add explicit local declarations.  `protoize' with `-l' inserts a
  422.      prototype declaration for each function in each block which calls
  423.      the function without any declaration.  This option applies only to
  424.      `protoize'.
  425.  
  426. `-n'
  427.      Make no real changes.  This mode just prints information about the
  428.      conversions that would have been done without `-n'.
  429.  
  430. `-N'
  431.      Make no `.save' files.  The original files are simply deleted.
  432.      Use this option with caution.
  433.  
  434. `-p PROGRAM'
  435.      Use the program PROGRAM as the compiler.  Normally, the name `gcc'
  436.      is used.
  437.  
  438. `-q'
  439.      Work quietly.  Most warnings are suppressed.
  440.  
  441. `-v'
  442.      Print the version number, just like `-v' for `gcc'.
  443.  
  444.    If you need special compiler options to compile one of your program's
  445. source files, then you should generate that file's `.X' file specially,
  446. by running `gcc' on that source file with the appropriate options and
  447. the option `-aux-info'.  Then run `protoize' on the entire set of
  448. files.  `protoize' will use the existing `.X' file because it is newer
  449. than the source file.  For example:
  450.  
  451.      gcc -Dfoo=bar file1.c -aux-info
  452.      protoize *.c
  453.  
  454. You need to include the special files along with the rest in the
  455. `protoize' command, even though their `.X' files already exist, because
  456. otherwise they won't get converted.
  457.  
  458.    *Note Protoize Caveats::, for more information on how to use
  459. `protoize' successfully.
  460.  
  461. File: gcc.info,  Node: Installation,  Next: C Extensions,  Prev: Invoking GCC,  Up: Top
  462.  
  463. Installing GNU CC
  464. *****************
  465.  
  466.    Here is the procedure for installing GNU CC on a Unix system.
  467.  
  468. * Menu:
  469.  
  470. * Other Dir::     Compiling in a separate directory (not where the source is).
  471. * Cross-Compiler::   Building and installing a cross-compiler.
  472. * PA Install::    See below for installation on the HP Precision Architecture.
  473. * Sun Install::   See below for installation on the Sun.
  474. * 3b1 Install::   See below for installation on the 3b1.
  475. * Unos Install::  See below for installation on Unos (from CRDS).
  476. * VMS Install::   See below for installation on VMS.
  477. * WE32K Install:: See below for installation on the 3b* aside from the 3b1.
  478. * MIPS Install::  See below for installation on the MIPS Architecture.
  479.  
  480.   1. If you have built GNU CC previously in the same directory for a
  481.      different target machine, do `make distclean' to delete all files
  482.      that might be invalid.  One of the files this deletes is
  483.      `Makefile'; if `make distclean' complains that `Makefile' does not
  484.      exist, it probably means that the directory is already suitably
  485.      clean.
  486.  
  487.   2. On a System V release 4 system, make sure `/usr/bin' precedes
  488.      `/usr/ucb' in `PATH'.  The `cc' command in `/usr/ucb' uses
  489.      libraries which have bugs.
  490.  
  491.   3. Specify the host and target machine configurations.  You do this by
  492.      running the file `configure' with appropriate arguments.
  493.  
  494.      If you are building a compiler to produce code for the machine it
  495.      runs on, specify just one machine type.  Use the `--target'
  496.      option; the host type will default to be the same as the target.
  497.      (For information on building a cross-compiler, see *Note
  498.      Cross-Compiler::.)  The command looks like this:
  499.  
  500.           configure --target=sparc-sun-sunos4.1
  501.  
  502.      A configuration name may be canonical or it may be more or less
  503.      abbreviated.
  504.  
  505.      A canonical configuration name has three parts, separated by
  506.      dashes.  It looks like this: `CPU-COMPANY-SYSTEM'.  (The three
  507.      parts may themselves contain dashes; `configure' can figure out
  508.      which dashes serve which purpose.)  For example,
  509.      `m68k-sun-sunos4.1' specifies a Sun 3.
  510.  
  511.      You can also replace parts of the configuration by nicknames or
  512.      aliases.  For example, `sun3' stands for `m68k-sun', so
  513.      `sun3-sunos4.1' is another way to specify a Sun 3.  You can also
  514.      use simply `sun3-sunos', since the version of SunOS is assumed by
  515.      default to be version 4.  `sun3-bsd' also works, since `configure'
  516.      knows that the only BSD variant on a Sun 3 is SunOS.
  517.  
  518.      You can specify a version number after any of the system types,
  519.      and some of the CPU types.  In most cases, the version is
  520.      irrelevant, and will be ignored.  So you might as well specify the
  521.      version if you know it.
  522.  
  523.      Here are the possible CPU types:
  524.  
  525.           a29k, alpha, arm, cN, clipper, elxsi, h8300, hppa1.0, hppa1.1,
  526.           i386, i860, i960, m68000, m68k, m88k, mips, ns32k, pyramid,
  527.           romp, rs6000, sh, sparc, sparclite, vax, we32k.
  528.  
  529.      Here are the recognized company names.  As you can see, customary
  530.      abbreviations are used rather than the longer official names.
  531.  
  532.           alliant, altos, apollo, att, bull, cbm, convergent, convex,
  533.           crds, dec, dg, dolphin, elxsi, encore, harris, hitachi, hp,
  534.           ibm, intergraph, isi, mips, motorola, ncr, next, ns, omron,
  535.           plexus, sequent, sgi, sony, sun, tti, unicom.
  536.  
  537.      The company name is meaningful only to disambiguate when the rest
  538.      of the information supplied is insufficient.  You can omit it,
  539.      writing just `CPU-SYSTEM', if it is not needed.  For example,
  540.      `vax-ultrix4.2' is equivalent to `vax-dec-ultrix4.2'.
  541.  
  542.      Here is a list of system types:
  543.  
  544.           aix, acis, aos, bsd, clix, ctix, dgux, dynix, genix, hpux,
  545.           isc, linux, luna, mach, minix, newsos, osf, osfrose, riscos,
  546.           sco, solaris, sunos, sysv, ultrix, unos, vms.
  547.  
  548.      You can omit the system type; then `configure' guesses the
  549.      operating system from the CPU and company.
  550.  
  551.      You can add a version number to the system type; this may or may
  552.      not make a difference.  For example, you can write `bsd4.3' or
  553.      `bsd4.4' to distinguish versions of BSD.  In practice, the version
  554.      number is most needed for `sysv3' and `sysv4', which are often
  555.      treated differently.
  556.  
  557.      If you specify an impossible combination such as `i860-dg-vms',
  558.      then you may get an error message from `configure', or it may
  559.      ignore part of the information and do the best it can with the
  560.      rest.  `configure' always prints the canonical name for the
  561.      alternative that it used.
  562.  
  563.      Often a particular model of machine has a name.  Many machine
  564.      names are recognized as aliases for CPU/company combinations.
  565.      Thus, the machine name `sun3', mentioned above, is an alias for
  566.      `m68k-sun'.  Sometimes we accept a company name as a machine name,
  567.      when the name is popularly used for a particular machine.  Here is
  568.      a table of the known machine names:
  569.  
  570.           3300, 3b1, 3bN, 7300, altos3068, altos, apollo68, att-7300,
  571.           balance, convex-cN, crds, decstation-3100, decstation, delta,
  572.           encore, fx2800, gmicro, hp7NN, hp8NN, hp9k2NN, hp9k3NN,
  573.           hp9k7NN, hp9k8NN, iris4d, iris, isi68, m3230, magnum, merlin,
  574.           miniframe, mmax, news-3600, news800, news, next, pbd, pc532,
  575.           pmax, ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3,
  576.           sun4, symmetry, tower-32, tower.
  577.  
  578.      Remember that a machine name specifies both the cpu type and the
  579.      company name.
  580.  
  581.      There are four additional options you can specify independently to
  582.      describe variant hardware and software configurations.  These are
  583.      `--with-gnu-as', `--with-gnu-ld', `--with-stabs' and `--nfp'.
  584.  
  585.     `--with-gnu-as'
  586.           On certain systems, you must specify whether you want GNU CC
  587.           to work with the usual compilation tools or with the GNU
  588.           compilation tools (including GAS).  Use the `--with-gnu-as'
  589.           argument when you run `configure', if you want to use the GNU
  590.           tools.  (Specify `--with-gnu-ld' as well, since on these
  591.           systems GAS works only with the GNU linker.)  The systems
  592.           where this makes a difference are `i386-ANYTHING-sysv',
  593.           `i860-ANYTHING-bsd', `m68k-hp-hpux', `m68k-sony-bsd',
  594.           `m68k-altos-sysv', `m68000-hp-hpux', `m68000-att-sysv', and
  595.           `mips-ANY').  On any other system, `--with-gnu-as' has no
  596.           effect.
  597.  
  598.     `--with-gnu-ld'
  599.           Specify the option `--with-gnu-ld' if you plan to use the GNU
  600.           linker.  This inhibits the installation of `collect2', a
  601.           program which otherwise serves as a front-end for the
  602.           system's linker on most configurations.
  603.  
  604.     `--with-stabs'
  605.           On MIPS based systems, you must specify whether you want GNU
  606.           CC to create the normal ECOFF debugging format, or to use
  607.           BSD-style stabs passed through the ECOFF symbol table.  The
  608.           normal ECOFF debug format cannot fully handle languages other
  609.           than C.  BSD stabs format can handle other languages, but it
  610.           only works with the GNU debugger GDB.
  611.  
  612.           Normally, GNU CC uses the ECOFF debugging format by default;
  613.           if you prefer BSD stabs, specify `--with-stabs' when you
  614.           configure GNU CC.
  615.  
  616.           No matter which default you choose when you configure GNU CC,
  617.           the user can use the `-gcoff' and `-gstabs+' options to
  618.           specify explicitly the debug format for a particular
  619.           compilation.
  620.  
  621.     `--nfp'
  622.           On certain systems, you must specify whether the machine has
  623.           a floating point unit.  These systems are `m68k-sun-sunosN'
  624.           and `m68k-isi-bsd'.  On any other system, `--nfp' currently
  625.           has no effect, though perhaps there are other systems where
  626.           it could usefully make a difference.
  627.  
  628.      If you want to install your own homemade configuration files, you
  629.      can use `local' as the company name to access them.  If you use
  630.      configuration `CPU-local', the configuration name without the cpu
  631.      prefix is used to form the configuration file names.
  632.  
  633.      Thus, if you specify `m68k-local', then the files `m68k/local.md',
  634.      `m68k/local.h', `m68k/local.c', `m68k/xm-local.h', `m68k/t-local',
  635.      and `m68k/x-local' will be used.
  636.  
  637.      Here is a list of configurations that have special treatment or
  638.      special things you must know:
  639.  
  640.     `alpha-*-osf1'
  641.           Systems using processors that implement the DEC Alpha
  642.           architecture and are running the OSF/1 operating system, for
  643.           example the DEC Alpha AXP systems.  (VMS on the Alpha is not
  644.           currently supported by GNU CC.)
  645.  
  646.           GNU CC writes a `.verstamp' directive to the assembler output
  647.           file unless it is built as a cross-compiler.  It gets the
  648.           version to use from the file `/usr/include/stamp.h'.  If you
  649.           install a new version of OSF/1, you should rebuild GCC to
  650.           pick up the new version stamp.
  651.  
  652.           Note that since the Alpha is a 64-bit architecture,
  653.           cross-compilers from 32-bit machines will not generate as
  654.           efficient code as that generated when the compiler is running
  655.           on a 64-bit machine because many optimizations that depend on
  656.           being able to represent a word on the target in an integral
  657.           value on the host cannot be performed.  Building
  658.           cross-compilers for 32-bit machines that run on the Alpha has
  659.           not been tested and may not work properly.
  660.  
  661.     `a29k'
  662.           AMD Am29K-family processors.  These are normally used in
  663.           embedded applications.  There are no standard Unix
  664.           configurations.  This configuration corresponds to AMD's
  665.           standard calling sequence and binary interface and is
  666.           compatible with other 29K tools.
  667.  
  668.           You may need to make a variant of the file `a29k.h' for your
  669.           particular configuration.
  670.  
  671.     `a29k-*-bsd'
  672.           AMD Am29050 used in a system running a variant of BSD Unix.
  673.  
  674.     `elxsi-elxsi-bsd'
  675.           The Elxsi's C compiler has known limitations that prevent it
  676.           from compiling GNU C.  Please contact `mrs@cygnus.com' for
  677.           more details.
  678.  
  679.     `i386-*-sco'
  680.           Compilation with RCC is recommended.
  681.  
  682.     `i386-ibm-aix'
  683.           You need to use a version of GAS that you can get from
  684.           `tranle@intellicorp.com'.
  685.  
  686.     `i386-sequent'
  687.           Go to the Berkeley universe before compiling.  In addition,
  688.           you probably need to create a file named `string.h'
  689.           containing just one line: `#include <strings.h>'.
  690.  
  691.     `i386-sun-sunos4'
  692.           You may find that you need another version of GNU CC to begin
  693.           bootstrapping with, since the current version when built with
  694.           the system's own compiler seems to get an infinite loop
  695.           compiling part of `libgcc2.c'.  GNU CC version 2 compiled
  696.           with GNU CC (any version) seems not to have this problem.
  697.  
  698.     `m68000-att'
  699.           AT&T 3b1, a.k.a. 7300 PC.  Special procedures are needed to
  700.           compile GNU CC with this machine's standard C compiler, due
  701.           to bugs in that compiler.  *Note 3b1 Install::.  You can
  702.           bootstrap it more easily with previous versions of GNU CC if
  703.           you have them.
  704.  
  705.     `m68000-hp-bsd'
  706.           HP 9000 series 200 running BSD.  Note that the C compiler
  707.           that comes with this system cannot compile GNU CC; contact
  708.           `law@cs.utah.edu' to get binaries of GNU CC for bootstrapping.
  709.  
  710.     `m68k-altos'
  711.           Altos 3068.  You must use the GNU assembler, linker and
  712.           debugger.  Also, you must fix a kernel bug.  Details in the
  713.           file `README.ALTOS'.
  714.  
  715.     `m68k-hp-hpux'
  716.           HP 9000 series 300 or 400 running HP-UX.  HP-UX version 8.0
  717.           has a bug in the assembler that prevents compilation of GNU
  718.           CC.  To fix it, get patch PHCO_0800 from HP.
  719.  
  720.           In addition, `--gas' does not currently work with this
  721.           configuration.  Changes in HP-UX have broken the library
  722.           conversion tool and the linker.
  723.  
  724.     `m68k-sun'
  725.           Sun 3.  We do not provide a configuration file to use the Sun
  726.           FPA by default, because programs that establish signal
  727.           handlers for floating point traps inherently cannot work with
  728.           the FPA.
  729.  
  730.     `m88k-svr3'
  731.           Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference
  732.           port.  These systems tend to use the Green Hills C, revision
  733.           1.8.5, as the standard C compiler.  There are apparently bugs
  734.           in this compiler that result in object files differences
  735.           between stage 2 and stage 3.  If this happens, make the stage
  736.           4 compiler and compare it to the stage 3 compiler.  If the
  737.           stage 3 and stage 4 object files are identical, this suggests
  738.           a problem with the standard C compiler.  It is best, however,
  739.           to use an older version of GNU CC for bootstrapping.
  740.  
  741.     `m88k-dgux'
  742.           Motorola m88k running DG/UX.  To build native or cross
  743.           compilers on DG/UX, you must first change to the 88open BCS
  744.           software development environment.  This is done by issuing
  745.           this command:
  746.  
  747.                eval `sde-target m88kbcs`
  748.  
  749.     `m88k-tektronix-sysv3'
  750.           Tektronix XD88 running UTekV 3.2e.  Do not turn on
  751.           optimization while building stage1 if you bootstrap with the
  752.           buggy Green Hills compiler.  Also, The bundled LAI System V
  753.           NFS is buggy so if you build in an NFS mounted directory,
  754.           start from a fresh reboot, or avoid NFS all together.
  755.           Otherwise you may have trouble getting clean comparisons
  756.           between stages.
  757.  
  758.     `mips-mips-bsd'
  759.           MIPS machines running the MIPS operating system in BSD mode.
  760.           It's possible that some old versions of the system lack the
  761.           functions `memcpy', `memcmp', and `memset'.  If your system
  762.           lacks these, you must remove or undo the definition of
  763.           `TARGET_MEM_FUNCTIONS' in `mips-bsd.h'.
  764.  
  765.     `mips-sgi-*'
  766.           Silicon Graphics MIPS machines running IRIX.  In order to
  767.           compile GCC on an SGI the "c.hdr.lib" option must be
  768.           installed from the CD-ROM supplied from Silicon Graphics.
  769.           This is found on the 2nd CD in release 4.0.1.
  770.  
  771.     `mips-sony-sysv'
  772.           Sony MIPS NEWS.  This works in NEWSOS 5.0.1, but not in 5.0.2
  773.           (which uses ELF instead of COFF).  Support for 5.0.2 will
  774.           probably be provided soon by volunteers.  In particular, the
  775.           linker does not like the code generated by GCC when shared
  776.           libraries are linked in.
  777.  
  778.     `ns32k-encore'
  779.           Encore ns32000 system.  Encore systems are supported only
  780.           under BSD.
  781.  
  782.     `ns32k-*-genix'
  783.           National Semiconductor ns32000 system.  Genix has bugs in
  784.           `alloca' and `malloc'; you must get the compiled versions of
  785.           these from GNU Emacs.
  786.  
  787.     `ns32k-sequent'
  788.           Go to the Berkeley universe before compiling.  In addition,
  789.           you probably need to create a file named `string.h'
  790.           containing just one line: `#include <strings.h>'.
  791.  
  792.     `ns32k-utek'
  793.           UTEK ns32000 system ("merlin").  The C compiler that comes
  794.           with this system cannot compile GNU CC; contact
  795.           `tektronix!reed!mason' to get binaries of GNU CC for
  796.           bootstrapping.
  797.  
  798.     `romp-*-aos'
  799.     `romp-*-mach'
  800.           The only operating systems supported for the IBM RT PC are
  801.           AOS and MACH.  GNU CC does not support AIX running on the RT.
  802.           We recommend you compile GNU CC with an earlier version of
  803.           itself; if you compile GNU CC with `hc', the Metaware
  804.           compiler, it will work, but you will get mismatches between
  805.           the stage 2 and stage 3 compilers in various files.  These
  806.           errors are minor differences in some floating-point constants
  807.           and can be safely ignored; the stage 3 compiler is correct.
  808.  
  809.     `rs6000-*-aix'
  810.           *Read the file `README.RS6000' for information on how to get
  811.           a fix for problems in the IBM assembler that interfere with
  812.           GNU CC.* You must either obtain the new assembler or avoid
  813.           using the `-g' switch.  Note that `Makefile.in' uses `-g' by
  814.           default when compiling `libgcc2.c'.
  815.  
  816.     `vax-dec-ultrix'
  817.           Don't try compiling with Vax C (`vcc').  It produces
  818.           incorrect code in some cases (for example, when `alloca' is
  819.           used).
  820.  
  821.           Meanwhile, compiling `cp-parse.c' with pcc does not work
  822.           because of an internal table size limitation in that
  823.           compiler.  To avoid this problem, compile just the GNU C
  824.           compiler first, and use it to recompile building all the
  825.           languages that you want to run.
  826.  
  827.      Here we spell out what files will be set up by `configure'.
  828.      Normally you need not be concerned with these files.
  829.  
  830.         * A symbolic link named `config.h' is made to the top-level
  831.           config file for the machine you will run the compiler on
  832.           (*note Config::.).  This file is responsible for defining
  833.           information about the host machine.  It includes `tm.h'.
  834.  
  835.           The top-level config file is located in the subdirectory
  836.           `config'.  Its name is always `xm-SOMETHING.h'; usually
  837.           `xm-MACHINE.h', but there are some exceptions.
  838.  
  839.           If your system does not support symbolic links, you might
  840.           want to set up `config.h' to contain a `#include' command
  841.           which refers to the appropriate file.
  842.  
  843.         * A symbolic link named `tconfig.h' is made to the top-level
  844.           config file for your target machine.  This is used for
  845.           compiling certain programs to run on that machine.
  846.  
  847.         * A symbolic link named `tm.h' is made to the
  848.           machine-description macro file for your target machine.  It
  849.           should be in the subdirectory `config' and its name is often
  850.           `MACHINE.h'.
  851.  
  852.         * A symbolic link named `md' will be made to the machine
  853.           description pattern file.  It should be in the `config'
  854.           subdirectory and its name should be `MACHINE.md'; but MACHINE
  855.           is often not the same as the name used in the `tm.h' file
  856.           because the `md' files are more general.
  857.  
  858.         * A symbolic link named `aux-output.c' will be made to the
  859.           output subroutine file for your machine.  It should be in the
  860.           `config' subdirectory and its name should be `MACHINE.c'.
  861.  
  862.         * The command file `configure' also constructs the file
  863.           `Makefile' by adding some text to the template file
  864.           `Makefile.in'.  The additional text comes from files in the
  865.           `config' directory, named `t-TARGET' and `h-HOST'.  If these
  866.           files do not exist, it means nothing needs to be added for a
  867.           given target or host.
  868.  
  869.   4. Make sure the Bison parser generator is installed.  (This is
  870.      unnecessary if the Bison output files `c-parse.c' and `cexp.c' are
  871.      more recent than `c-parse.y' and `cexp.y' and you do not plan to
  872.      change the `.y' files.)
  873.  
  874.      Bison versions older than Sept 8, 1988 will produce incorrect
  875.      output for `c-parse.c'.
  876.  
  877.   5. Build the compiler.  Just type `make LANGUAGES=c' in the compiler
  878.      directory.
  879.  
  880.      `LANGUAGES=c' specifies that only the C compiler should be
  881.      compiled.  The makefile normally builds compilers for all the
  882.      supported languages; currently, C, C++ and Objective C.  However,
  883.      C is the only language that is sure to work when you build with
  884.      other non-GNU C compilers.  In addition, building anything but C
  885.      at this stage is a waste of time.
  886.  
  887.      In general, you can specify the languages to build by typing the
  888.      argument `LANGUAGES="LIST"', where LIST is one or more words from
  889.      the list `c', `c++', and `objective-c'.
  890.  
  891.      Ignore any warnings you may see about "statement not reached" in
  892.      `insn-emit.c'; they are normal.  Any other compilation errors may
  893.      represent bugs in the port to your machine or operating system, and
  894.      should be investigated and reported (*note Bugs::.).
  895.  
  896.      Some commercial compilers fail to compile GNU CC because they have
  897.      bugs or limitations.  For example, the Microsoft compiler is said
  898.      to run out of macro space.  Some Ultrix compilers run out of
  899.      expression space; then you need to break up the statement where
  900.      the problem happens.
  901.  
  902.      If you are building with a previous GNU C compiler, do not use
  903.      `CC=gcc' on the make command or by editing the Makefile.  Instead,
  904.      use a full pathname to specify the compiler, such as
  905.      `CC=/usr/local/bin/gcc'.  This is because make might execute the
  906.      `gcc' in the current directory before all of the compiler
  907.      components have been built.
  908.  
  909.   6. If you are building a cross-compiler, stop here.  *Note
  910.      Cross-Compiler::.
  911.  
  912.   7. Move the first-stage object files and executables into a
  913.      subdirectory with this command:
  914.  
  915.           make stage1
  916.  
  917.      The files are moved into a subdirectory named `stage1'.  Once
  918.      installation is complete, you may wish to delete these files with
  919.      `rm -r stage1'.
  920.  
  921.   8. If you have chosen a configuration for GNU CC which requires other
  922.      GNU tools (such as GAS or the GNU linker) instead of the standard
  923.      system tools, install the required tools in the `stage1'
  924.      subdirectory under the names `as', `ld' or whatever is
  925.      appropriate.  This will enable the stage 1 compiler to find the
  926.      proper tools in the following stage.
  927.  
  928.      Alternatively, you can do subsequent compilation using a value of
  929.      the `PATH' environment variable such that the necessary GNU tools
  930.      come before the standard system tools.
  931.  
  932.   9. Recompile the compiler with itself, with this command:
  933.  
  934.           make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O"
  935.  
  936.      This is called making the stage 2 compiler.
  937.  
  938.      The command shown above builds compilers for all the supported
  939.      languages.  If you don't want them all, you can specify the
  940.      languages to build by typing the argument `LANGUAGES="LIST"'.  LIST
  941.      should contain one or more words from the list `c', `c++',
  942.      `objective-c', and `proto'.  Separate the words with spaces.
  943.      `proto' stands for the programs `protoize' and `unprotoize'; they
  944.      are not a separate language, but you use `LANGUAGES' to enable or
  945.      disable their installation.
  946.  
  947.      If you are going to build the stage 3 compiler, then you might
  948.      want to build only the C language in stage 2.
  949.  
  950.      Once you have built the stage 2 compiler, if you are short of disk
  951.      space, you can delete the subdirectory `stage1'.
  952.  
  953.      On a 68000 or 68020 system lacking floating point hardware, unless
  954.      you have selected a `tm.h' file that expects by default that there
  955.      is no such hardware, do this instead:
  956.  
  957.           make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O -msoft-float"
  958.  
  959.  10. If you wish to test the compiler by compiling it with itself one
  960.      more time, install any other necessary GNU tools (such as GAS or
  961.      the GNU linker) in the `stage2' subdirectory as you did in the
  962.      `stage1' subdirectory, then do this:
  963.  
  964.           make stage2
  965.           make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
  966.  
  967.      This is called making the stage 3 compiler.  Aside from the `-B'
  968.      option, the compiler options should be the same as when you made
  969.      the stage 2 compiler.  But the `LANGUAGES' option need not be the
  970.      same.  The command shown above builds compilers for all the
  971.      supported languages; if you don't want them all, you can specify
  972.      the languages to build by typing the argument `LANGUAGES="LIST"',
  973.      as described above.
  974.  
  975.      Then compare the latest object files with the stage 2 object
  976.      files--they ought to be identical, unless they contain time stamps.
  977.      You can compare the files, disregarding the time stamps if any,
  978.      like this:
  979.  
  980.           make compare
  981.  
  982.      This will mention any object files that differ between stage 2 and
  983.      stage 3.  Any difference, no matter how innocuous, indicates that
  984.      the stage 2 compiler has compiled GNU CC incorrectly, and is
  985.      therefore a potentially serious bug which you should investigate
  986.      and report (*note Bugs::.).
  987.  
  988.      If your system does not put time stamps in the object files, then
  989.      this is a faster way to compare them (using the Bourne shell):
  990.  
  991.           for file in *.o; do
  992.           cmp $file stage2/$file
  993.           done
  994.  
  995.      If you have built the compiler with the `-mno-mips-tfile' option on
  996.      MIPS machines, you will not be able to compare the files.  The
  997.      Alpha uses timestamps that `make compare' does not know how to
  998.      ignore, so you will not be able to compare on the Alpha.
  999.  
  1000.  11. Install the compiler driver, the compiler's passes and run-time
  1001.      support with `make install'.  Use the same value for `CC',
  1002.      `CFLAGS' and `LANGUAGES' that you used when compiling the files
  1003.      that are being installed.  One reason this is necessary is that
  1004.      some versions of Make have bugs and recompile files gratuitously
  1005.      when you do this step.  If you use the same variable values, those
  1006.      files will be recompiled properly.
  1007.  
  1008.      For example, if you have built the stage 2 compiler, you can use
  1009.      the following command:
  1010.  
  1011.           make install CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" LANGUAGES="LIST"
  1012.  
  1013.      This copies the files `cc1', `cpp' and `libgcc.a' to files `cc1',
  1014.      `cpp' and `libgcc.a' in the directory
  1015.      `/usr/local/lib/gcc-lib/TARGET/VERSION', which is where the
  1016.      compiler driver program looks for them.  Here TARGET is the target
  1017.      machine type specified when you ran `configure', and VERSION is
  1018.      the version number of GNU CC.  This naming scheme permits various
  1019.      versions and/or cross-compilers to coexist.
  1020.  
  1021.      This program will also copy the driver program `gcc' into the
  1022.      directory `/usr/local/bin', so that it appears in typical execution
  1023.      search paths.
  1024.  
  1025.      On some systems, this command will cause recompilation of some
  1026.      files.  This is usually due to bugs in `make'.  You should either
  1027.      ignore this problem, or use GNU Make.
  1028.  
  1029.      *Warning: there is a bug in `alloca' in the Sun library.  To avoid
  1030.      this bug, be sure to install the executables of GNU CC that were
  1031.      compiled by GNU CC.  (That is, the executables from stage 2 or 3,
  1032.      not stage 1.)  They use `alloca' as a built-in function and never
  1033.      the one in the library.*
  1034.  
  1035.      (It is usually better to install GNU CC executables from stage 2
  1036.      or 3, since they usually run faster than the ones compiled with
  1037.      some other compiler.)
  1038.  
  1039.  12. Install the Objective C library (if you have built the Objective C
  1040.      compiler).  Here is the command to do this:
  1041.  
  1042.           make install-libobjc CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
  1043.  
  1044.  13. If you're going to use C++, it's likely that you need to also
  1045.      install the libg++ distribution.  It should be available from the
  1046.      same place where you got the GNU C distribution.  Just as GNU C
  1047.      does not distribute a C runtime library, it also does not include
  1048.      a C++ run-time library.  All I/O functionality, special class
  1049.      libraries, etc., are available in the libg++ distribution.
  1050.  
  1051.    If you cannot install the compiler's passes and run-time support in
  1052. `/usr/local/lib', you can alternatively use the `-B' option to specify
  1053. a prefix by which they may be found.  The compiler concatenates the
  1054. prefix with the names  `cpp', `cc1' and `libgcc.a'.  Thus, you can put
  1055. the files in a directory `/usr/foo/gcc' and specify `-B/usr/foo/gcc/'
  1056. when you run GNU CC.
  1057.  
  1058.    Also, you can specify an alternative default directory for these
  1059. files by setting the Make variable `libdir' when you make GNU CC.
  1060.  
  1061. File: gcc.info,  Node: Other Dir,  Next: Cross-Compiler,  Up: Installation
  1062.  
  1063. Compilation in a Separate Directory
  1064. ===================================
  1065.  
  1066.    If you wish to build the object files and executables in a directory
  1067. other than the one containing the source files, here is what you must
  1068. do differently:
  1069.  
  1070.   1. Make sure you have a version of Make that supports the `VPATH'
  1071.      feature.  (GNU Make supports it, as do Make versions on most BSD
  1072.      systems.)
  1073.  
  1074.   2. If you have ever run `configure' in the source directory, you must
  1075.      undo the configuration.  Do this by running:
  1076.  
  1077.           make distclean
  1078.  
  1079.   3. Go to the directory in which you want to build the compiler before
  1080.      running `configure':
  1081.  
  1082.           mkdir gcc-sun3
  1083.           cd gcc-sun3
  1084.  
  1085.      On systems that do not support symbolic links, this directory must
  1086.      be on the same file system as the source code directory.
  1087.  
  1088.   4. Specify where to find `configure' when you run it:
  1089.  
  1090.           ../gcc/configure ...
  1091.  
  1092.      This also tells `configure' where to find the compiler sources;
  1093.      `configure' takes the directory from the file name that was used to
  1094.      invoke it.  But if you want to be sure, you can specify the source
  1095.      directory with the `--srcdir' option, like this:
  1096.  
  1097.           ../gcc/configure --srcdir=../gcc sun3
  1098.  
  1099.      The directory you specify with `--srcdir' need not be the same as
  1100.      the one that `configure' is found in.
  1101.  
  1102.    Now, you can run `make' in that directory.  You need not repeat the
  1103. configuration steps shown above, when ordinary source files change.  You
  1104. must, however, run `configure' again when the configuration files
  1105. change, if your system does not support symbolic links.
  1106.  
  1107. ə